package com.dragon.backstage.convert;

import com.dragon.backstage.domain.excel.UserOperateLogExportExcel;
import com.dragon.backstage.domain.param.userOperateLog.UserOperateLogParam;
import com.dragon.backstage.domain.vo.userOperateLog.UserOperateLogDetailVo;
import com.dragon.backstage.domain.vo.userOperateLog.UserOperateLogVo;
import com.dragon.common.enums.BusinessStatus;
import com.dragon.common.enums.BusinessType;
import com.dragon.interfaces.domain.request.userOperateLog.UserOperateLogRequest;
import com.dragon.interfaces.entity.UserOperateLog;

/**
 * 用户操作日志转换器
 *
 * @author dragon
 * @version 1.0
 * @date 2024/10/8 17:46
 */
public class UserOperateLogConvert {

    public static UserOperateLogRequest toUserOperateLogRequest(UserOperateLogParam userOperateLogParam) {
        return UserOperateLogRequest.builder()
            .pageNum(userOperateLogParam.getPageNum())
            .pageSize(userOperateLogParam.getPageSize())
            .operateLocation(userOperateLogParam.getOperateLocation())
            .title(userOperateLogParam.getTitle())
            .operateAccount(userOperateLogParam.getOperateAccount())
            .businessType(userOperateLogParam.getBusinessType())
            .status(userOperateLogParam.getStatus())
            .operateStartTime(userOperateLogParam.getOperateStartTime())
            .operateEndTime(userOperateLogParam.getOperateEndTime())
            .build();
    }

    public static UserOperateLogVo toUserOperateLogVo(UserOperateLog userOperateLog) {
        return UserOperateLogVo.builder()
            .operateId(userOperateLog.getOperateId())
            .traceId(userOperateLog.getTraceId())
            .operateAccount(userOperateLog.getOperateAccount())
            .title(userOperateLog.getTitle())
            .businessType(userOperateLog.getBusinessType())
            .method(userOperateLog.getMethod())
            .requestMethod(userOperateLog.getRequestMethod())
            .requestUrl(userOperateLog.getRequestUrl())
            .requestIp(userOperateLog.getRequestIp())
            .operateLocation(userOperateLog.getOperateLocation())
            .status(userOperateLog.getStatus())
            .operateTime(userOperateLog.getOperateTime())
            .costTime(userOperateLog.getCostTime())
            .build();
    }

    public static UserOperateLogDetailVo toUserOperateLogDetailVo(UserOperateLog userOperateLog) {
        return UserOperateLogDetailVo.builder()
            .operateId(userOperateLog.getOperateId())
            .traceId(userOperateLog.getTraceId())
            .operateAccount(userOperateLog.getOperateAccount())
            .title(userOperateLog.getTitle())
            .businessType(userOperateLog.getBusinessType())
            .method(userOperateLog.getMethod())
            .requestMethod(userOperateLog.getRequestMethod())
            .requestUrl(userOperateLog.getRequestUrl())
            .requestIp(userOperateLog.getRequestIp())
            .operateLocation(userOperateLog.getOperateLocation())
            .requestParam(userOperateLog.getRequestParam())
            .jsonResult(userOperateLog.getJsonResult())
            .status(userOperateLog.getStatus())
            .errorMsg(userOperateLog.getErrorMsg())
            .operateTime(userOperateLog.getOperateTime())
            .costTime(userOperateLog.getCostTime())
            .build();
    }

    public static UserOperateLogExportExcel toUserOperateLogExportExcel(UserOperateLog userOperateLog) {
        return UserOperateLogExportExcel.builder()
            .operateId(userOperateLog.getOperateId())
            .traceId(userOperateLog.getTraceId())
            .operateAccount(userOperateLog.getOperateAccount())
            .title(userOperateLog.getTitle())
            .businessTypeDes(BusinessType.getDesByCode(userOperateLog.getBusinessType()))
            .method(userOperateLog.getMethod())
            .requestMethod(userOperateLog.getRequestMethod())
            .requestUrl(userOperateLog.getRequestUrl())
            .requestIp(userOperateLog.getRequestIp())
            .operateLocation(userOperateLog.getOperateLocation())
            .requestParam(userOperateLog.getRequestParam())
            .jsonResult(userOperateLog.getJsonResult())
            .statusDes(BusinessStatus.getDesByCode(Integer.valueOf(userOperateLog.getStatus())))
            .errorMsg(userOperateLog.getErrorMsg())
            .operateTime(userOperateLog.getOperateTime())
            .costTime(userOperateLog.getCostTime())
            .build();
    }

}
